package com.dys.testhashtable02;

import java.util.HashMap;
import java.util.Hashtable;
import java.util.LinkedHashMap;
import java.util.Map;

/**
 * @className: com.dys.testhashtable02.HashTableTest
 * @description: HashTable
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/08/08 下午10:18
 */
public class HashTableTest {
    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) {
        new HashTableTest().testLinkedHashMap();
    }

    /**
     * 无序，唯一，k和v可以为null，线程不安全，效率高
     */
    public void testHashMap() {
        Map<String, Integer> map = new HashMap<String, Integer>();
        map.put(null, null);
        map.put("A", 12345);
        map.put("B", 23456);
        map.put("C", 34567);
        map.put("D", 4567);
        map.put("E", 5678);
        System.out.println(map.size());
        System.out.println(map);
    }

    /**
     * 唯一，无序, key不能为null,线程安全，效率低
     */
    public void testHashTable() {
        Map<String, Integer> map = new Hashtable<>();
        // map.put(null,null);
        map.put("A", 12345);
        map.put("B", 23456);
        map.put("C", 34567);
        map.put("D", 4567);
        map.put("E", 5678);
        System.out.println(map.size());
        System.out.println(map);
    }

    /**
     * 唯一，有序，可存入null值
     */
    public void testLinkedHashMap() {
        Map<String, Integer> map = new LinkedHashMap<>();
        map.put(null, null);
        map.put("A", 12345);
        map.put("B", 23456);
        map.put("C", 34567);
        map.put("D", 4567);
        map.put("E", 5678);
        System.out.println(map.size());
        System.out.println(map);
    }
}
